// 2-4 基本的输入输出-标准日志流（clog）
/**
 * C++ 基本的输入输出
 * C++ 标准库提供了一组丰富的输入/输出功能，我们将在后续的章节进行介绍。本章将讨论 C++ 编程中最基本和最常见的 I/O 操作。
 * 
 * C++ 的 I/O 发生在流中，流是字节序列。如果字节流是从设备（如键盘、磁盘驱动器、网络连接等）流向内存，这叫做输入操作。如果字节流是从内存流向设备（如显示屏、打印机、磁盘驱动器、网络连接等），这叫做输出操作。
 * 
 * I/O 库头文件
 * 下列的头文件在 C++ 编程中很重要。
 * 1. <iostream>
 * 该文件定义了 cin、cout、cerr 和 clog 对象，分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
 * 
 * 2. <iomanip>
 * 该文件通过所谓的参数化的流操纵器（比如 setw 和 setprecision），来声明对执行标准化 I/O 有用的服务。
 * 
 * 3. <fstream>
 * 该文件为用户控制的文件处理声明服务。我们将在文件和流的相关章节讨论它的细节。
 * 
 * ------------
 * 标准日志流（clog）
 * 预定义的对象 clog 是 iostream 类的一个实例。clog 对象附属到标准错误设备，通常也是显示屏，但是 clog 对象是缓冲的。这意味着每个流插入到 clog 都会先存储在缓冲区，直到缓冲填满或者缓冲区刷新时才会输出。
 * 
 * clog 也是与流插入运算符 << 结合使用的，如下所示（示例一）:
 * 
 * -------------
 * 通过这些小实例，我们无法区分 cout、cerr 和 clog 的差异，但在编写和执行大型程序时，它们之间的差异就变得非常明显。所以良好的编程实践告诉我们，使用 cerr 流来显示错误消息，而其他的日志消息则使用 clog 流来输出。
 * 
*/

#include <iostream>

int main(void)
{
  /**
   * 示例一
  */
  char message[] = "unknown error";

  std::clog << "Error message : " << message << std::endl;

  printf("---------end----------\n");
  // system("pause");
  return 0;
}